home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / leninp / leninput.bas < prev    next >
Encoding:
BASIC Source File  |  1992-08-03  |  4.3 KB  |  144 lines

  1. DEFINT A-Z
  2. DECLARE FUNCTION LENINPUT$ (FIELDLEN)
  3. DECLARE FUNCTION GETPRESS$ ()
  4.  
  5. CLS
  6. LOCATE 10, 10
  7.  VAR$ = LENINPUT$(10)
  8.  
  9. FUNCTION GETPRESS$
  10. '--------------------------------------------------------------------------
  11.  
  12. DO WHILE KEY$ = ""
  13.   KEY$ = INKEY$
  14. LOOP
  15.  
  16. GETPRESS$ = KEY$
  17.  
  18. END FUNCTION
  19.  
  20. FUNCTION LENINPUT$ (FIELDLEN)
  21. '--------------------------------------------------------------------------
  22. ORIGCOL = POS(0): ORIGROW = CSRLIN
  23. DIM LETTER(FIELDLEN) AS STRING
  24. COL = ORIGCOL: ROW = ORIGCOL
  25. DIM NULL AS STRING * 1
  26. CURSORTYPE = 3
  27. X = 1
  28.                                                          
  29. DO
  30.   LOCATE ROW, COL, 1, CURSORTYPE, 4
  31.     VAR$ = GETPRESS$
  32.       IF LEN(VAR$) = 2 THEN     'extended key
  33.        
  34.         SELECT CASE VAR$
  35.           CASE NULL + "K"    'left key                    
  36.             IF X > 1 THEN
  37.               COL = COL - 1
  38.               X = X - 1
  39.             END IF
  40.           CASE NULL + "M"    'right key                   
  41.             IF X < FIELDLEN THEN
  42.               COL = COL + 1
  43.               X = X + 1
  44.             END IF
  45.           CASE NULL + "G", NULL + "H", NULL + "I"     'home/up/pgup keys
  46.             COL = ORIGCOL
  47.             X = 1
  48.           CASE NULL + "O", NULL + "P", NULL + "Q"     'end/down/pgdown keys
  49.             COL = ORIGCOL + (FIELDLEN - 1)
  50.             X = FIELDLEN
  51.           CASE NULL + "R"           'insert                     
  52.             IF CURSORTYPE = 3 THEN
  53.               CURSORTYPE = 1
  54.             ELSE
  55.               CURSORTYPE = 3
  56.             END IF
  57.           CASE NULL + "D"           'F10
  58.             EXIT DO
  59.           CASE NULL + "S"           'delete                     
  60.             FOR Z = ORIGROW + X TO ORIGCOL + (FIELDLEN - 1)
  61.               LET$ = CHR$(SCREEN(ORIGROW, Z))
  62.                LOCATE ORIGROW, Z - 1
  63.                 PRINT LET$
  64.             NEXT Z
  65.             LOCATE ORIGROW, ORIGCOL + (FIELDLEN - 1)
  66.              PRINT " "
  67.           END SELECT
  68.  
  69.       ELSE                  'nomal key
  70.          
  71.           SELECT CASE VAR$
  72.             CASE CHR$(27), CHR$(13)     'escape/enter
  73.               EXIT DO
  74.             CASE CHR$(9)       'tab           
  75.               IF X < FIELDLEN - 4 THEN
  76.                 COL = COL + 5
  77.                 X = X + 5
  78.               ELSE
  79.                 COL = ORIGCOL + (FIELDLEN - 1)
  80.                 X = FIELDLEN
  81.               END IF
  82.             CASE CHR$(8)       'backspace
  83.                IF COL > ORIGCOL THEN
  84.                  FOR Z = ORIGCOL + (X - 1) TO ORIGCOL + (FIELDLEN - 1)
  85.                    LET$ = CHR$(SCREEN(ORIGROW, Z))
  86.                     LOCATE ORIGROW, Z - 1
  87.                      PRINT LET$
  88.                  NEXT Z
  89.                  IF X > 1 THEN
  90.                    COL = COL - 1
  91.                    X = X - 1
  92.                  END IF
  93.                  LOCATE ORIGROW, ORIGCOL + (FIELDLEN - 1)
  94.                   PRINT " "
  95.                END IF
  96.             CASE ELSE          'a letter
  97.               IF CURSORTYPE = 3 THEN    'overwrite          
  98.                 PRINT VAR$
  99.                  IF X < FIELDLEN THEN
  100.                    COL = COL + 1
  101.                    X = X + 1
  102.                  END IF
  103.               ELSE     'insert cursor                       
  104.                COUNTER = ORIGCOL + (FIELDLEN - 1)
  105.                IF COL < COUNTER THEN
  106.                  DO
  107.                    LET$ = CHR$(SCREEN(ORIGROW, (COUNTER - 1)))
  108.                     LOCATE ORIGROW, COUNTER
  109.                      PRINT LET$
  110.                    COUNTER = COUNTER - 1
  111.                      IF COUNTER = ORIGCOL + (X - 1) THEN
  112.                        EXIT DO
  113.                      END IF
  114.                  LOOP
  115.                  LOCATE ROW, COL
  116.                   PRINT VAR$
  117.                ELSE
  118.                 PRINT VAR$
  119.                  IF X < FIELDLEN THEN
  120.                    COL = COL + 1
  121.                    X = X + 1
  122.                  END IF
  123.                END IF
  124.                   IF X < FIELDLEN THEN
  125.                     COL = COL + 1
  126.                     X = X + 1
  127.                   END IF
  128.               END IF
  129.           END SELECT
  130.      
  131.       END IF
  132. LOOP
  133.  
  134. TOTALWORD$ = ""
  135. FOR Z = 0 TO (FIELDLEN - 1)
  136.   LETTER$ = CHR$(SCREEN(ROW, ORIGCOL + Z))
  137.   TOTALWORD$ = TOTALWORD$ + LETTER$
  138. NEXT Z
  139.  
  140. LENINPUT$ = RTRIM$(LTRIM$(TOTALWORD$))
  141.  
  142. END FUNCTION
  143.  
  144.